<?php

function check(){

    // 1.验证是否有误
    if($_FILES['image']['error']!=0){
        switch($_FILES['image']['error']){
           case 1:
              return "文件大小超过了php.ini中允许的最大值";
           case 2:
              return "文件大小超过了表单允许的最大值";
           case 3:
              return "只有部分文件上传";
           case 4:
              return "没有文件上传";
           case 6:
              return "找不到临时文件";
           case 7:
              return "文件写入失败"; 
        }
    }

    // 2.验证格式
    $allow=array('image/jpeg','image/png','image/gif');
    // 创建一个 fileinfo资源
    $info=finfo_open(FILEINFO_MIME_TYPE);
    // 将finfo资源和文件做比较
    $min=finfo_file($info,$_FILES['image']['tmp_name']);
   //  return in_array($min,$allow)?"":"只能上传".implode($allow)."的格式文件";
   if(!in_array($min,$allow)){
      return "只能上传".implode($allow)."的格式文件";
   }

   // 3.验证大小
   $size=123456;
   $k=1024;
   if($_FILES['image']['size']>$size){
      echo "文件不能超过".floor($size/$k).'k';
   }

   //4.验证是否是http上传
   if(is_uploaded_file($_FILES['image']['tmp_name'])){
      $path=uniqid('user').rand(100,500).$_FILES['image']['name'];
      move_uploaded_file($_FILES['image']['tmp_name'],'./upload/'.$path);
      echo"上传成功";
   }else{
      return "文件不是http post上传的<br/>";
   }

}
if(!empty($_POST)){
    echo check();
}


?>





<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
     <form action="./优化文件上传.php" method="POST" enctype="multipart/form-data">
      <input type="file" name="image">
      <input type="submit" name="sub" value="上传">
     
     </form>
</body>
</html>